# import numpy as np

# arr1 = np.array([True, False, True], dtype=bool)
# arr2 = np.array([False, True, False], dtype=bool)

# result_and = np.bitwise_and(arr1, arr2)
# result_or = np.bitwise_or(arr1, arr2)
# result_xor = np.bitwise_xor(arr1, arr2)
# result_not = np.bitwise_not(arr1)

# print("AND:", result_and)  # [False, False, False]
# print("OR:", result_or)    # [True, True, True]
# print("XOR:", result_xor)  # [True, True, True]
# print("NOT:", result_not)  # [False, True, False]

# # 按位取反
# arr_invert = np.invert(np.array([1, 2], dtype=np.int8))
# print("Invert:", arr_invert)  # [-2, -3]

# # 左移位运算
# arr_left_shift = np.left_shift(5, 2)
# print("Left Shift:", arr_left_shift)  # 20

# # 右移位运算
# arr_right_shift = np.right_shift(10, 1)
# print("Right Shift:", arr_right_shift)  # 5



import numpy as np

# 示例 1: 正整数
arr1 = np.array([1, 2, 3], dtype=np.uint8) # 使用无符号 8 位整数
print("原始数组 (uint8):", arr1)
print("位反转结果 (uint8):", np.invert(arr1))
# 1 (00000001) -> 254 (11111110)
# 2 (00000010) -> 253 (11111101)
# 3 (00000011) -> 252 (11111100)

print("-" * 20)

# 示例 2: 负整数（使用有符号整数时需要注意）
# 对于有符号整数，位反转通常会改变其符号，因为它会影响最高位的符号位。
arr2 = np.array([-1, -2, 0], dtype=np.int8) # 使用有符号 8 位整数
print("原始数组 (int8):", arr2)
print("位反转结果 (int8):", np.invert(arr2))
# -1 (11111111) -> 0 (00000000)
# -2 (11111110) -> 1 (00000001)
# 0 (00000000) -> -1 (11111111)

print("-" * 20)

# 示例 3: 布尔值 (False 被视为 0, True 被视为 1)
arr3 = np.array([True, False, True], dtype=bool)
print("原始数组 (bool):", arr3)
print("位反转结果 (bool):", np.invert(arr3))
# True (1) -> False (0)
# False (0) -> True (1)